[Amazon FSx for NetApp ONTAP] ONTAP接続時に使用するユーザーとロールを作成してみた
権限ごとにユーザーを分けたい
こんにちは、のんピ(@non____97)です。
皆さんはAmazon FSx for NetApp ONTAP(以降FSxN)を運用していて、SSHで接続時に使用するユーザーを権限ごとに分けたいと思ったことはありますか? 私はあります。
FSxNではデフォルトでユーザーを使用するできるようになっていません。デフォルトで存在しているユーザーはロックがかかっているため、マネジメントコンソールからfsxadmin
または各SVMのvsadmin
のユーザーパスワードを設定することで、対象ユーザーを使用することが可能になります。
fsxadmin
やvsadmin
などのデフォルトで存在しないユーザーやロールを用意したい場合はONTAP CLIかONTAP REST APIを用いる必要があります。
場合によっては、運用者個人ごとにユーザーを用意したり、各ユーザーに割り当てる権限を絞りたい場面が出てきます。
実際にどのように設定するのか紹介します。
いきなりまとめ
- ONTAPではRBACで権限を付与
- ONTAPロールはファイルシステムレベルのものと、SVMレベルのものの2種類ある
- ファイルシステムレベルのロールは新規追加及び編集ができない
- 各レベルのロールがデフォルトでいくつか存在している
- SVMレベルのロールを自作して、ユーザーに割り当てることも可能
ONTAPロールとは
ONTAPはロールベースのアクセスコントロール(RBAC)で権限を付与します。
ONTAPロールでは権限だけでなく、割り当てられるONTAPユーザーの名前の長さやパスワードポリシー、ロック期間についても設定できます。
ONTAPロールはファイルシステムレベルのものと、SVMレベルのものの2種類に大別されます。
ファイルシステムレベルのロールはデフォルトで以下の2つが存在しています。
ロール名 | 権限概要 |
---|---|
fsxadmin |
• ONTAPシステムに対する無制限の権限を持っている • すべてのファイルシステムと、ONTAPファイルシステムの FSxで利用可能な SVMレベルのリソースを設定できる |
fsxadmin-readonly |
• ファイルシステムレベルですべてを表示できるが、変更を加えることはできない |
参考 : ONTAP ロールとユーザー - ONTAP に関する FSx
ファイルシステムレベルのロールの注意点は以下のとおりです。
- 新しくファイルシステムレベルのロールを作成することはできない
- 既存のファイルシステムレベルのロールの権限を変更することはできない
- パスワードポリシーなど権限以外は修正可能
「各SVMのボリューム情報のみを横断的に表示させたい」ということを実現することはできません。権限的に過剰にはなってしまいますが、fsxadmin-readonly
を使用することになります。
SVMレベルのロールでは以下の6つがデフォルトとして存在しています。
Role name | Capabilities |
---|---|
vsadmin |
• Manage your user account, local password, and key information • Manage volumes, except for volume moves • Manage quotas, qtrees, Snapshot copies, and files • Manage LUNs • Perform SnapLock operations, except for privileged delete • Configure protocols: NFS, SMB, and iSCSI • Configure services: DNS, LDAP, and NIS • Monitor jobs • Monitor network connections and the network interface • Monitor the health of the SVM |
vsadmin-volume |
• Manage your user account, local password, and key information • Manage volumes, including volume moves • Manage quotas, qtrees, Snapshot copies, and files • Manage LUNs • Configure protocols: NFS, SMB, and iSCSI • Configure services: DNS, LDAP, and NIS • Monitor the network interface • Monitor the health of the SVM |
vsadmin-protocol |
• Manage your user account, local password, and key information • Manage LUNs • Configure protocols: NFS, SMB, and iSCSI • Configure services: DNS, LDAP, and NIS • Monitor network interface • Monitor the health of the SVM |
vsadmin-backup |
• Manage your user account, local password, and key information • Manage NDMP operations • Make a restored volume read/write • Manage SnapMirror relationships and Snapshot copies • View volumes and network information |
vsadmin-snaplock |
• Manage your user account, local password, and key information • Manage volumes, except for volume moves • Manage quotas, qtrees, Snapshot copies, and files • Perform SnapLock operations, including privileged delete • Configure protocols: NFS and SMB • Configure services: DNS, LDAP, and NIS • Monitor jobs • Monitor network connections and the network interface |
vsadmin-readonly |
• Manage your user account, local password, and key information • Monitor the health of the SVM • Monitor the network interface • View volumes and LUNs • View services and protocols |
抜粋 : ONTAP のロールとユーザー - FSx for ONTAP
本記事投稿時点のデフォルトのONTAPロールの詳細な権限については以下GitHubリポジトリで管理しています。興味ある方は覗いてみてください。
権限の確認の仕方は以下記事が参考になります。
ONTAPユーザーとは
FSxNに接続する際はONTAPユーザーを使用します。
ONTAPロールとONTAPユーザーの関係性は1:nです。
1つのONTAPロールに複数のONTAPユーザーを関連づけることはできますが、1つのONTAPユーザーに関連づけられるONTAPロールは1つまでです。
ユーザーには以下のような情報が設定可能です。
- SVM名
- ユーザー名
- 関連付けるONTAPロール
- 接続方式
- amqp
- console
- http
- ontapi
- rsh
- service-processor
- snmp
- ssh
- telnet
- 認証方式
- cert
- community
- domain
- nsswitch
- password
- publickey
- saml
- usm
- 2要素認証方式
- domain
- nsswitch
- password
- publickey
- totp
- none
ONTAP CLIでのみ操作するなら接続方式はssh
、パスワードによる認証をするのであれば認証方式はpassword
という形で指定します。
オプションの詳細は以下NetApp公式ドキュメントかAWS公式ドキュメントをご覧ください。
やってみた
ONTAPロールの作成
実際に試してみましょう。
まず、SMBファイル共有を管理するようなロールを作成します。
具体的には以下のような権限を付与します。
- ボリュームに関する情報の参照権限
- SMBサーバーに関する情報の参照権限
- SMBファイル共有に関する変更権限
- SMBセッションに関する変更権限
df
の参照権限
ONTAPロールの作成はsecurity login role createで行います。
::> whoami
(security login whoami)
User: fsxadmin
Role: fsxadmin
::> security login role create -role vsadmin-smb-share -cmddirname "volume show" -access readonly -vserver svm
Warning: This operation will also affect the following commands:
"volume create"
"volume modify"
::> security login role create -role vsadmin-smb-share -cmddirname "vserver cifs" -access readonly -vserver svm
::> security login role create -role vsadmin-smb-share -cmddirname "vserver cifs share" -access all -vserver svm
::> security login role create -role vsadmin-smb-share -cmddirname "vserver cifs session" -access all -vserver svm
::> security login role create -role vsadmin-smb-share -cmddirname "df" -access readonly -vserver svm
::> security login role show -role vsadmin-smb-share
Role Command/ Access
Vserver Name Directory Query Level
---------- ------------- --------- ----------------------------------- --------
svm vsadmin-smb-share
DEFAULT none
df readonly
volume create readonly
volume modify readonly
volume show readonly
vserver cifs readonly
vserver cifs session all
vserver cifs share all
8 entries were displayed.
::> security login role config show -role vsadmin-smb-share
----- Password Restrictions -----
Vserver RoleName Size AlphaNum NoReuse ChangeDelay
----------- ------------- ---- -------- ------- -----------
svm vsadmin-smb-share
8 enabled 6 0 days
::> security login role config show -role vsadmin-smb-share -instance
Vserver: svm
Role Name: vsadmin-smb-share
Minimum Username Length Required: 3
Username Alpha-Numeric: disabled
Minimum Password Length Required: 8
Password Alpha-Numeric: enabled
Minimum Number of Special Characters Required In
The Password: 0
Password Expires In (Days): unlimited
Require Initial Password Update on First Login: disabled
Maximum Number of Failed Attempts: 0
Maximum Lockout Period (Days): 0
Disallow Last 'N' Passwords : 6
Delay Between Password Changes (Days): 0
Delay after Each Failed Login Attempt (Secs): 4
Minimum Number of Lowercase Alphabetic Characters
Required in the Password: 0
Minimum Number of Uppercase Alphabetic Characters
Required in the Password: 0
Minimum Number of Digits Required in the Password: 0
Display Warning Message Days Prior to Password
Expiry (Days): unlimited
Account Expires in (Days): unlimited
Maximum Duration of Inactivity before Account
Expiration (Days): unlimited
ロールの作成ができました。
ロールの権限割り当ては以下NetAppのKBが参考になります。
内部コマンドであるcreate
、modify
、delete
、show
は個別にアクセス権を指定することはできないため、注意しましょう。先のコマンド実行のようにvolume create
とvolume modify
に対する権限も併せて設定されます。
また、以下のようにvolume
全体に対するreadonly
の設定もできません。
::*> security login role create -role vsadmin-smb-share -cmddirname volume -access readonly -vserver svm
Error: command failed: not authorized for that command
ONTAPロールへ権限の削除
権限の削除はsecurity login role deleteで可能です。
::> security login role delete -role vsadmin-smb-share -cmddirname "df" -vserver svm
::> security login role show -role vsadmin-smb-share
Role Command/ Access
Vserver Name Directory Query Level
---------- ------------- --------- ----------------------------------- --------
svm vsadmin-smb-share
DEFAULT none
volume create readonly
volume modify readonly
volume show readonly
vserver cifs readonly
vserver cifs session all
vserver cifs share all
7 entries were displayed.
今回は割愛しますが、security login role modifyで権限の修正も可能です。
作成したONTAPロールを割り当てるONTAPユーザーの作成
ONTAPロールを割り当てるONTAPユーザーの作成をしてみましょう。
ユーザーの作成はsecurity login createです。
::> security login create ?
[ -vserver <vserver name> ] Vserver (default: FsxId0e64a4f5386f74c87)
[-user-or-group-name] <text> User Name or Group Name
[-application] <text> Application
[-authentication-method] <text> Authentication Method
[ -remote-switch-ipaddress <IP Address> ] Remote Switch IP Address
[[-role] <text>] Role Name (default: admin)
[ -comment <text (size 0..128)> ] Comment Text
[ -is-ns-switch-group {yes|no} ] Whether Ns-switch Group (default: no)
[ -second-authentication-method {none|publickey|password|nsswitch|domain|totp} ] Second Authentication Method2 (default: none)
[ -is-ldap-fastbind {yes|no} ] LDAP Fastbind Authentication
::> security login create -user-or-group-name vsadmin-smb-share-user -role vsadmin-smb-share -application ssh -authentication-method password -vserver svm
Error: command failed: failed to set field "username" to "vsadmin-smb-share-user"
Username does not meet configured requirements:
Username does not meet length requirements. Username length: 22. Maximum required length: 16.
::> security login create -user-or-group-name smb-share-user -role vsadmin-smb-share -application ssh -authentication-method password -vserver svm
Please enter a password for user 'smb-share-user':
Please enter it again:
ユーザーの作成が完了しました。
ユーザー名の最大文字数の上限が決まっているようですね。
NetAppのKBでもユーザー名の最大文字数について言及されていました。
- User Name limitations
- User Name is able to use valid characters: A-Z, a-z, 0-9, ".", "_", and "-"
- Note: User Name cannot start with -
- Maximum character is 16
Does User Name and Password of SVM user account have limitations? - NetApp Knowledge Base
ユーザーの情報はsecurity login showで確認できます。
::> security login show -user-or-group-name smb-share-user
Vserver: svm
Second
User/Group Authentication Acct Authentication
Name Application Method Role Name Locked Method
-------------- ----------- ------------- ---------------- ------ --------------
smb-share-user ssh password vsadmin-smb-share
no none
::> security login show -user-or-group-name smb-share-user -instance
Vserver: svm
User Name or Group Name: smb-share-user
Application: ssh
Authentication Method: password
Remote Switch IP Address: -
Role Name: vsadmin-smb-share
Account Locked: no
Comment Text: -
Whether Ns-switch Group: no
Second Authentication Method2: none
LDAP Fastbind Authentication: no
動作確認
動作確認です。
作成したONTAPユーザーでSVMにSSHして、権限で指定したとおりにコマンドが叩けられるのか確認します。
> ssh smb-share-user@localhost -p 22224
(smb-share-user@localhost) Password:
This is your first recorded login.
svm::> whoami
Error: "whoami" is not a recognized command
svm::> vserver show
Error: "show" is not a recognized command
svm::> ?
exit Quit the CLI session
history Show the history of commands for this CLI session
man Display the on-line manual pages
redo Execute a previous command
rows Show/Set the rows for this CLI session
top Go to the top-level directory
up Go up one directory
volume> Manage virtual storage, including volumes, snapshots, and mirrors
vserver> Manage Vservers
svm::> vserver ?
cifs> Manage the CIFS configuration of a Vserver
svm::> vserver cifs ?
branchcache> Manage CIFS BranchCache settings
character-mapping> Manage character mappings for invalid characters
check Display Validation Status of CIFS Configuration from Each Node
connection> Manage CIFS connections
domain> Manage domain interaction
group-policy> Manage group policies
home-directory> Manage home directories
nbtstat Display NetBIOS information over TCP connection
options> Manage CIFS options
security> Manage CIFS security settings
session> Manage CIFS sessions
share> Manage CIFS shares
show Display CIFS servers
symlink> Manage symbolic and wide links
users-and-groups> Manage local users, groups, and privileges
svm::> vserver cifs share ?
access-control> The access-control directory
create Create a CIFS share
delete Delete a CIFS share
modify Modify a CIFS share
properties> Manage share properties
show Display CIFS shares
svm::> vserver cifs show
Server Status Domain/Workgroup Authentication
Vserver Name Admin Name Style
----------- --------------- --------- ---------------- --------------
svm SMB-SERVER up CORP domain
svm::> vserver cifs share show
Vserver Share Path Properties Comment ACL
-------------- ------------- ----------------- ---------- -------- -----------
svm c$ / oplocks - BUILTIN\Administrators / Full Control
browsable
changenotify
show-previous-versions
svm FSxN vol_ntfs /vol_ntfs oplocks - Everyone / Full Control
browsable
changenotify
show-previous-versions
svm FSxN /vol_ntfs/SMB oplocks Everyone / Full Control
日本語共有 share browsable
changenotify
show-previous-versions
svm FSxN日本語 /vol_ntfs/SMB oplocks Everyone / Full Control
共有 share browsable
changenotify
show-previous-versions
svm ipc$ / browsable - -
svm New folder /vol_ntfs/qtree1_ oplocks Everyone / Read
renamed2/New browsable
folder changenotify
show-previous-versions
svm share /vol_ntfs oplocks - Everyone / Full Control
browsable
changenotify
show-previous-versions
svm share_qtree /vol_ntfs/qtree1_ oplocks - Everyone / Full Control
renamed browsable
changenotify
show-previous-versions
svm share_qtree_ /vol_ntfs/qtree2_ oplocks - Everyone / Full Control
dir renamed/dir browsable
changenotify
show-previous-versions
svm vol_ntfs_dst /vol_ntfs_dst oplocks - Everyone / Full Control
browsable
changenotify
Press <space> to page down, <return> for next line, or 'q' to quit...
10 entries were displayed.
svm::> volume ?
show Display a list of volumes
svm::> volume show
Vserver Volume Aggregate State Type Size Available Used%
--------- ------------ ------------ ---------- ---- ---------- ---------- -----
svm non_97_dev_fsvol_vol_test1
aggr1 online RW 10GB 9.50GB 0%
svm non_97_dev_fsvol_vol_test2
aggr1 online RW 2GB 1.90GB 0%
svm svm_root aggr1 online RW 1GB 960.7MB 1%
svm vol1 aggr1 online RW 16GB 13.19GB 13%
svm vol_ntfs aggr1 online DP 256GB 215.3GB 11%
svm vol_ntfs_dst aggr1 online RW 46.32GB 5.01GB 88%
6 entries were displayed.
vserver cifs share
配下はcreate
やmodify
など、書き込み系のコマンドを叩けそうですが、volume
などそれ以外については書き込み系のコマンドは候補にも出てきていないですね。
一点、whoami
は自信がどのユーザーなのか把握するために権限に追加しても良いかもですね。
追加する場合は以下のとおりです。
::> security login role create -role vsadmin-smb-share -cmddirname "security login whoami" -access readonly -vserver svm
::> security login role show -role vsadmin-smb-share
Role Command/ Access
Vserver Name Directory Query Level
---------- ------------- --------- ----------------------------------- --------
svm vsadmin-smb-share
DEFAULT none
security login whoami readonly
volume create readonly
volume modify readonly
volume show readonly
vserver cifs readonly
vserver cifs session all
vserver cifs share all
8 entries were displayed.
whoami
を叩けられるか確認します。
> ssh smb-share-user@localhost -p 22224
(smb-share-user@localhost) Password:
Last login time: 11/27/2024 06:06:09
Your privilege has changed since last login.
svm::> whoami
(security login whoami)
User: smb-share-user
Role: vsadmin-smb-share
叩けました。
最後にSMBファイル共有の設定ができるかどうか確認します。
svm::> cifs share create -share-name share-test -path /vol_ntfs_dst
svm::> vserver cifs share show -share-name share-test
Share: share-test
CIFS Server NetBIOS Name: SMB-SERVER
Path: /vol_ntfs_dst
Share Properties: oplocks
browsable
changenotify
show-previous-versions
Symlink Properties: symlinks
File Mode Creation Mask: -
Directory Mode Creation Mask: -
Share Comment: -
Share ACL: Everyone / Full Control
File Attribute Cache Lifetime: -
Volume Name: vol_ntfs_dst
Offline Files: manual
Vscan File-Operations Profile: standard
Maximum Tree Connections on Share: 4294967295
UNIX Group for File Create: -
はい、問題なくできました。
アクセス権限を細かく設定したい時や、運用者ごとにユーザーを発行したい時に
Amazon FSx for NetApp ONTAP接続時に使用するユーザーとロールを作成してみました。
アクセス権限を細かく設定したい時や、運用者ごとにユーザーを発行したい時にカスタムロールやカスタムユーザーを用意してみると良いでしょう。
この記事が誰かの助けになれば幸いです。
以上、AWS事業本部 コンサルティング部の のんピ(@non____97)でした!